package mx.ipn.negocios.telefonista;

import mx.ipn.negocios.*;
import mx.ipn.to.*;

public class DireccionBO {
	public static EstadoTO[] obtenerEstados() {
		return (EstadoTO[]) ConexionConPersistencia.invocaServicio(
				"seleccionarEstados", EstadoTO[].class);
	}

	public static TransferObject modificarEstado(EstadoTO estadoTO) {
		TransferObject to = new TransferObject();

		short resp = (Short) ConexionConPersistencia.invocaServicio(
				"modificarEstado", estadoTO, Short.class);

		switch (resp) {
		case -1:
			to.setTipoError(to.ERROR);
			to.setError(CodigosDeError.error.get(11001));
			break;
		case 0:
			to.setTipoError(to.ERROR);
			to.setError(CodigosDeError.error.get(11002));
			break;
		case 1:
			to.setTipoError(to.INFO);
			to.setError(CodigosDeError.error.get(11003));
			break;
		}

		return to;
	}

	public static TransferObject agregarEstado(EstadoTO estadoTO) {
		TransferObject to = new TransferObject();

		if ((Boolean) ConexionConPersistencia.invocaServicio("agregarEstado",
				estadoTO, Boolean.class)) {
			to.setTipoError(to.INFO);
			to.setError(CodigosDeError.error.get(11004));
		} else {
			to.setTipoError(to.ERROR);
			to.setError(CodigosDeError.error.get(11005));
		}

		return to;
	}

	public static MunicipioTO obtenerMunicipiosPorEstado(short idEstado) {
		return (MunicipioTO) ConexionConPersistencia.invocaServicio(
				"seleccionarMunicipiosPorEstado", idEstado, MunicipioTO.class);
	}
	
	public static TransferObject modificarMunicipio(MunicipioTO municipioTO) {
		TransferObject to = new TransferObject();

		short resp = (Short) ConexionConPersistencia.invocaServicio(
				"modificarMunicipio", municipioTO, Short.class);

		switch (resp) {
		case -1:
			to.setTipoError(to.ERROR);
			to.setError(CodigosDeError.error.get(11006));
			break;
		case 0:
			to.setTipoError(to.ERROR);
			to.setError(CodigosDeError.error.get(11007));
			break;
		case 1:
			to.setTipoError(to.INFO);
			to.setError(CodigosDeError.error.get(11008));
			break;
		}

		return to;
	}

	public static TransferObject agregarMunicipio(MunicipioTO municipioTO) {
		TransferObject to = new TransferObject();

		if ((Boolean) ConexionConPersistencia.invocaServicio("agregarMunicipio",
				municipioTO, Boolean.class)) {
			to.setTipoError(to.INFO);
			to.setError(CodigosDeError.error.get(11009));
		} else {
			to.setTipoError(to.ERROR);
			to.setError(CodigosDeError.error.get(11010));
		}

		return to;
	}

	public static ColoniaTO obtenerColoniasPorMunicipio(int idMunicipio) {
		return (ColoniaTO) ConexionConPersistencia
				.invocaServicio("seleccionarColoniasPorMunicipio", idMunicipio,
						ColoniaTO.class);
	}

	public static TransferObject modificarColonia(ColoniaTO coloniaTO) {
		TransferObject to = new TransferObject();

		short resp = (Short) ConexionConPersistencia.invocaServicio(
				"modificarColonia", coloniaTO, Short.class);

		switch (resp) {
		case -1:
			to.setTipoError(to.ERROR);
			to.setError(CodigosDeError.error.get(11011));
			break;
		case 0:
			to.setTipoError(to.ERROR);
			to.setError(CodigosDeError.error.get(11012));
			break;
		case 1:
			to.setTipoError(to.INFO);
			to.setError(CodigosDeError.error.get(11013));
			break;
		}

		return to;
	}

	public static TransferObject agregarColonia(ColoniaTO coloniaTO) {
		TransferObject to = new TransferObject();

		if ((Boolean) ConexionConPersistencia.invocaServicio("agregarColonia",
				coloniaTO, Boolean.class)) {
			to.setTipoError(to.INFO);
			to.setError(CodigosDeError.error.get(11014));
		} else {
			to.setTipoError(to.ERROR);
			to.setError(CodigosDeError.error.get(11015));
		}

		return to;
	}
	
	public static ColoniaCalleTO obtenerCallesPorColonia(int idColonia) {
		return (ColoniaCalleTO) ConexionConPersistencia.invocaServicio(
				"seleccionarCallesPorColonia", idColonia, ColoniaCalleTO.class);
	}

	public static TransferObject agregarColoniaCalle(ColoniaCalleTO coloniaCalleTO) {
		TransferObject to = new TransferObject();

		if ((Boolean) ConexionConPersistencia.invocaServicio("agregarColoniaCalle",
				coloniaCalleTO, Boolean.class)) {
			to.setTipoError(to.INFO);
			to.setError(CodigosDeError.error.get(11016));
		} else {
			to.setTipoError(to.ERROR);
			to.setError(CodigosDeError.error.get(11017));
		}

		return to;
	}
	
	public static TransferObject modificarCalle(CalleTO calleTO) {
		TransferObject to = new TransferObject();

		short resp = (Short) ConexionConPersistencia.invocaServicio(
				"modificarCalle", calleTO, Short.class);

		switch (resp) {
		case -1:
			to.setTipoError(to.ERROR);
			to.setError(CodigosDeError.error.get(11018));
			break;
		case 0:
			to.setTipoError(to.ERROR);
			to.setError(CodigosDeError.error.get(11019));
			break;
		case 1:
			to.setTipoError(to.INFO);
			to.setError(CodigosDeError.error.get(11020));
			break;
		}

		return to;
	}

	public static CalleTO agregarCalle(CalleTO calleTO) {
		CalleTO to = new CalleTO();

		int resp = (Integer) ConexionConPersistencia.invocaServicio("agregarCalle",
				calleTO, Integer.class);
		if(resp>0) {
			to.setTipoError(to.INFO);
			to.setError(CodigosDeError.error.get(11021));
			to.setIdCalle(resp);
		} else {
			to.setTipoError(to.ERROR);
			to.setError(CodigosDeError.error.get(11022));
		}

		return to;
	}
	
	public static DireccionTO obtenerDireccionesPorColoniaCalle(
			int idColoniaCalle) {
		return (DireccionTO) ConexionConPersistencia.invocaServicio(
				"seleccionarDireccionesPorColoniaCalle", idColoniaCalle,
				DireccionTO.class);
	}
	
	public static TransferObject modificarDireccion(DireccionTO direccionTO) {
		TransferObject to = new TransferObject();

		short resp = (Short) ConexionConPersistencia.invocaServicio(
				"modificarDireccion", direccionTO, Short.class);

		switch (resp) {
		case -1:
			to.setTipoError(to.ERROR);
			to.setError(CodigosDeError.error.get(11023));
			break;
		case 0:
			to.setTipoError(to.ERROR);
			to.setError(CodigosDeError.error.get(11024));
			break;
		case 1:
			to.setTipoError(to.INFO);
			to.setError(CodigosDeError.error.get(11025));
			break;
		}

		return to;
	}

	public static TransferObject agregarDireccion(DireccionTO direccionTO) {
		TransferObject to = new TransferObject();

		if ((Boolean) ConexionConPersistencia.invocaServicio("agregarDireccion",
				direccionTO, Boolean.class)) {
			to.setTipoError(to.INFO);
			to.setError(CodigosDeError.error.get(11026));
		} else {
			to.setTipoError(to.ERROR);
			to.setError(CodigosDeError.error.get(11027));
		}

		return to;
	}
}
